/*
 * This file is a part of the SWFer project.
 *
 * Copyright (C) 2012 Michael Bradshaw <mjbshaw@gmail.com>
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the Free
 * Software Foundation; either version 2 of the License, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
 * Place, Suite 330, Boston, MA 02111-1307 USA
 *
 */

#ifndef SWFHEADER_HPP
#define SWFHEADER_HPP

#include "BasicTypes.hpp"

namespace swfer
{

struct SwfHeader
{
    SwfHeader() : version(10), fileLength(0), frameCount(0)
    {
        signature[0] = 'F';
        signature[1] = 'W';
        signature[2] = 'S';
    }

    uint8_t signature[3]; // "FWS" or "CWS"
    uint8_t version;
    uint32_t fileLength;
    Rect frameSize;
    Fixed16 frameRate;
    uint16_t frameCount;
};

template <>
extern std::istream& read<SwfHeader>(std::istream& stream, SwfHeader& header);

template <>
extern std::ostream& write<SwfHeader>(std::ostream& stream, const SwfHeader& header);

}

#endif
